Distributed database systems include a plurality of storage devices spread among a network of interconnected computers. The distributed database systems typically have greater reliability and availability than parallel database systems, among other benefits. Various internet services, for example social networking services, employ distributed database systems to manage the storage and retrieval of information. Distributed databases may employ replication which involves the electronic copying of data to multiple resources of the database so that users of the database may access data relevant to their tasks without interfering with the work of others. Additionally, changes applied to data stored on one resource are captured and propagated across the other resources that store copies of that data, thus enabling users with fast, local access to shared data, while protecting the availability of applications.
In a distributed database that stores shards of data objects on nodes, it is desirable to achieve good load balance and enable fast data recovery if a node dies or if a new node needs to be added. Accordingly, there is an opportunity for efficient and effective distributed database replication techniques and frameworks.